pwdmanaproposls. a ..
cdVšechny Unixové systémy mají jedno společné: nepoužívají písmena jednotek jako Windows. Vše adresáře a soubory jsou řazené do tzv. stromové struktury a "vyrůstají" z jediného kořenového adresáře "root". Ten se značí lomítkem /. Písmen netřeba.
💡 Takto to ve všech Unixových systémech funguje "od nepaměti" (přes 50 let). Písmena jednotek má pouze Windows (pochází z dob MS DOS). Je zvláštní, že právě jejich nepřítomnost většině začínajících uživatelů připadá "divná". Nemělo by to být právě opačně?
Uživateli tedy například vůbec nezáleží na tom, kolik a jakých fyzických úložišť souborů konkrétní počítač má, jestli jsou to skutečné harddisky a na jaké oddíly jsou nebo nejsou rozděleny, zda jsou to třeba DVD mechaniky, USB disky nebo třeba pouze síťové disky kdesi hluboko v Internetu.
Kterékoliv z takových úložišť lze "namountovat" (znamená připojit – příkazy mount a umount) do kteréhokoliv místa typického Unixového filesystému a jeho prostřednictvím se k němu poté dá přistupovat. Dokonce i jakékoliv zařízení počítače (jako příklad uveďme třeba sériový port USB) vystupuje jako speciální soubor (adresář /dev) ve filesystému a dá se s ním takto komunikovat. Tyto činnosti jsou vyhrazeny pouze správci systému - rootovi.
Důležitá informace je, že názvy souborů a adresářů v Unixu (a Linuxu) rozlišují malá a velká písmena. Běžné je používat výhradně písmena malá, jsou ale zažité případy, kdy se naopak používají písmena velká (například soubory README, adresář X windows s názvem X11 a několik dalších podobných případů). S těmi se ale běžně nesetkáme.
Souborový systém má v Unixu více nebo méně pevnou základní strukturu (pro zájemce https://www.pathname.com/fhs/) s jejím typickým využitím. Ta se mírně liší distribuce od distribuce.
Níže je výpis těch důležitých nebo jinak zajímavých adresářů. Není nutné je všechny a všechno znát zpaměti.
/ ... Kořenový adresář, nazývaný též "root" (nezaměňujte s názvem účtu root). Jak již bylo řečeno, vše se v souborovém systému Unixu odvíjí od takzvaného kořenového adresáře. Ten se značí lomítkem /, které slouží jako oddělovač adresářů v cestě k souboru. V kořenovém adresáři se typicky vyskytuje jen naprosté minimum skutečných souborů obsahujících data. Na druhou stranu obsahují několik systémových adresářů. Některé z nich jsou popsané níže./bin ... Adresář s důležitými spustitelnými programy, které zajišťují základní funkčnost systému. Tyto programy jsou používány už během procesu bootování a slouží i při opravách instalace Unixu v případě závažných poruch./sbin ... Adresář svojí funkcí velmi podobný adresáři /bin. Liší se pouze tím, že v něm obsažené programy jsou určeny pro systém a administrátora systému, ale nejsou dostupné běžným uživatelům tak jako ty v adresáři /bin./boot ... Adresář, v němž jsou uloženy všechny soubory nutné pro proces bootování. Typicky je právě zde uložen kernel (jádro systému) a bývá zde také vnořený adresář s použitým bootloaderem a všemi jeho potřebnými soubory./dev ... Toto je adresář, ve kterém se nacházejí speciální soubory určené k přímé komunikaci s hardwarem počítače. Unix rozděluje hardwarová zařízení do dvou velkých kategorií. Jsou to znaková zařízení a bloková zařízení./etc ... Tento adresář je místem, ve kterém se nachází prakticky veškerá nastavení systému v podobě konfiguračních souborů všech programů nainstalovaných na daném počítači. Některé základní jsou typicky uloženy přímo v adresáři /etc, ale většina programů si zde vytváří svoje struktury dalších adresářů, kam svoji konfiguraci ukládají v přehledné podobě. Tak například název jakéhokoliv Unixového počítače je uložen v textové podobě v souboru /etc/hostname, seznam uživatelů najdeme v souboru /etc/passwd, název distribuce v souboru /etc/issue./home ... Adresář obsahuje podadresáře, které jsou domovskými adresáři jednotlivých uživatelů majících na daném stroji zřízen účet. Vytvoříme-li tedy na daném počítači například uživatele pepa, bude zároveň automaticky vytvořen i adresář /home/pepa, kam si daný uživatel bude moci ukládat všechny svoje soubory, a kde má také osobní nastavení ovlivňující chování systému po jeho přihlášení./root ... Systémový administrátor v Unixech se typicky jmenuje root a má svůj domovský adresář oddělen od domovských adresářů běžných uživatelů (zejména z bezpečnostních důvodů). Účel adresáře /root je tedy pro roota systému stejný jako účel adresáře /home/pepa pro uživatele pepa z výše uvedeného příkladu. Adresář /root je ovšem vytvářen přímo při instalaci systému, kdežto adresáře jednotlivých uživatelů až teprve při vytváření jejich účtů na daném systému. Proto bývá také obsah a využití domovských adresářů běžných uživatelů trochu jiné, než je tomu u adresáře /root. I root svůj domovský adresář vidí jako ~./lib ... Adresář obsahuje sdílené objektové knihovny potřebné jednak při bootování systému, ale využívané i mnoha různými programy při jeho normálním běhu. Důvod: Bylo by zbytečné veškerý kód různých programů psát vždy úplně od začátku, když se mnohé jejich funkce velmi podobají. Proto se používají knihovny předem naprogramovaných funkcí, které se už z programů pouze volají. V tomto adresáři se také nachází důležitý podadresář /lib/modules obsahující další strukturu podadresářů s takzvanými moduly jádra (kernelu). Vysvětlení: Moderní jádra jsou modulární, takže například pokud máte v počítači nějakou netypickou síťovou kartu, stačí sehnat a zavést do jádra její modul./mnt, /media ... Oba adresáře jsou určeny k mountování (připojování) dalších souborových systémů. Obsahují obvykle podadresáře s intuitivními názvy, kam montujeme další filesystémy. Například typicky v něm může být adresář cdrom, kam se montuje systém DVDčka po jeho zasunutí do počítače. V Debianu je pro montování typických zařízení určen namísto adresáře /mnt právě adresář /media./lost+found ... Pokud se správce musí zajímat o tento adresář, nevěští to nic dobrého. Znamená to zpravidla, že se souborovým systémem se děje něco špatného (například když začíná odcházet harddisk). Sem se totiž dostávají soubory, které jsou nalezeny při kontrole filesystému jako nějakým způsobem narušené. Pokud se tedy začnou z nějakých neznámých důvodů ztrácet soubory, bývá toto místo místem poslední záchrany./opt ... Tento adresář je místem, určeným pro ukládání souborů, které nemají žádné jiné vhodnější logické umístění. Obvykle na všech Unixech zeje prázdnotou./proc ... Adresář /proc je speciální adresář, ve kterém si vytváří svůj podadresář každý běžící proces, a i jádro (kernel) zde má uložené zajímavé informace. Například pokud chceme zjistit, na jakém procesoru daný Unix běží, není nic jednoduššího než si nechat vypsat soubor /proc/cpuinfo. Dozvíme se tak o procesoru velmi jednoduchým způsobem daleko více informací, než jsme schopni například zjistit v celém systému MS Windows. Podobně vypsáním /proc/meminfo získáme dokonalý přehled o současném stavu paměti počítače./tmp ... Adresář pro dočasné soubory se v Unixech jmenuje /tmp. Adresář je určen skutečně pro uchování dočasných souborů a je systémem pravidelně nemilosrdně mazán. Debian maže tento adresář například při každém bootování./usr ... Adresář je na Unixovém systému typickým místem pro instalaci jednotlivých aplikací. Mívá obvykle bohatou strukturu podadresářů, jejíž stavba se v různých distribucích poměrně výrazně liší. V Debianu se v ní například opakuje část struktury z kořenového adresáře./var ... Adresář je místo, kam se na Unixech ukládají veškerá data, která se v průběhu činnosti počítače mění (variable). I tento adresář mívá bohatou strukturu podadresářů jejíž stavba je hodně závislá na konkrétní distribuci. V Debianu se například do adresáře /var/www typicky ukládají webové stránky, které má server nabízet, do adresáře /var/backups je dobré dělat zálohy dat, ve /var/log najdeme logy systému i jednotlivých programů atd.🎥 Pro zájemce 14minutové video: https://youtu.be/P0QZnAnsQ4c?si=knZPR8g3RkWkibjM
pwd Pokud není pracovní adresář v terminálu na první pohled patrný, nebo si jej prostě chcete jen vypsat, zadejte příkaz pwd.
⚠️ Pracovním adresářem se chápe takový, kde se zrovna nacházíte. Jinými slovy, není to synonymum "domovský adresář").
MacBook:c machac$ pwd
/Users/machac/c
machac@TuX:~/c
$ pwd
/home/machac/c
[jan@fedora ~/c]$ pwd
/home/jan/c
Znak ~ (vlnka, tilda) reprezentuje domovský adresář:
machac@TuX:~
$ pwd
/home/machac
Výhodou tohoto zápisu je úspornost a také fakt, že pro každého uživatele je vlnka jeho home adresář. Toho se s běžně využívá např. ve skriptech.
Jinými slovy, místo vlnky si jednoduše představte celou cestu /home/jmeno.
man Manuálové stránky. Příkaz man následovaný názvem příkazu vypíše jeho tzv. „manuálovou stránku“. V něm je uveden kompletní "návod k použití" příkazu.
$ man pwd
Jde v podstatě obyčejný textový soubor. Pro pohyb použijte šipky nahoru a dolu, ukončení je klávesou Q.
V zápisu syntaxe si všimněte hranatých závorek. Ty "říkají", že argument(y) je nepovinný.
💡 TIP: Manuálové stránky jsou také dostupné na internetu. Vyhledejte "man ls". Výsledkem bude několik odkazů na manuálové stránky příkazu ls. Všechny manuálové stránky najdete také na www.man7.org.
apropos Příkaz apropos slouží k vyhledávání v manuálových stránkách podle klíčových slov. Když zadáte klíčové slovo jako argument příkazu, systém vyhledá v manuálových stránkách všechny záznamy, které obsahují toto klíčové slovo, a zobrazí je uživateli. Tímto způsobem lze rychle najít relevantní informace o příkazech, funkcích nebo konceptech, které se týkají daného klíčového slova.
$ apropos klicove_slovo
ls Velmi často používaným příkazem je ls. Vypíše obsah adresáře.
$ ls
$ ls -l
S přepínačem -l ji vypíše s podrobnostmi (typ, oprávnění, majitel, velikost, datum úpravy, název).
⚠️ Termín adresář (directory) je v Unixových systémech běžné označení pro složku (folder).
I příkaz ls má manuálovou stránku. Nelekněte se, přepínačů je velmi velké množství (snad nejvíc ze všech příkazů). Běžně nám jich stačí pouze několik. Všimněte si, že u některých existují dvě varianty přepínačů: -krátký a --dlouhý.
Příkaz ls umí vypsat nejen aktuální adresář, ale i jakýkoliv jiný. Vypište si (bez a s přepínačem -l):
$ ls /home
$ ls /
$ ls -l /home
$ ls -l /
Ve všech Unixových systémech jsou od nepaměti skryté soubory/adresáře takové, jejichž název začíná tečkou. Tečka je znak, je tedy součástí názvu.
Nejčastěji je využívají příkazy a aplikace pro uložení svých nastavení (konfigurace). Jsou skryté z dobrého důvodu. Neodstraňujte je!
Výpis skrytých souborů/adresářů zajistí přepínač -a.
$ ls -a
$ ls --all
$ ls -l -a
$ ls -al
💡 Krátké přepínače (-) lze sdružovat za jednu pomlčku bez ohledu na pořadí. Dlouhé (--) musí být samostatně.
⚠️ Oblast, kde se často chybuje, resp. obtížněji se chápe.
Běžně se používají dva typy zápisu: absolutní nebo relativní.
Absolutní zápis obsahuje kompletní cestu počínaje kořenovým adresářem "root" (to první lomítko v cestě):
debian@jmeno:~
$ ls /etc/network
Je tedy úplně jedno, v jakém adresáři se zrovna nacházíte.
Relativní zápis cesty začíná názvem souboru nebo adresáře a vztahuje se k aktuálnímu pracovnímu adresáři. Pokud jsem v adresáři /etc, pak relativní cesta by byla:
debian@jmeno:/etc
$ ls network
Většina příkazů v operačním systému Unix funguje implicitně v aktuálním adresáři, který lze změnit pomocí příkazu cd.
Klávesa TAB je velmi užitečným pomocníkem.
Místo celého názvu souboru napište jen jeden, dva znaky a stiskněte klávesu TAB. Zbytek názvu se dopíše. Tím máte jistotu, že je název zapsaný správně. A taky je to pohodlnější.
Pokud je možností víc, nic se nevypíše. Stiskněte TAB ještě jednou, vypíše se seznam souborů odpovídající zapsanému vzoru.
. a .. V operačním systému Unix (podobně jako v operačním systému DOS) existují dva speciální adresáře, jež se používají pouze jako relativní. Jsou to adresáře . a ... Jedná se tedy o zkratky, které existují v každém adresáři, ale ne vždy mají přesně ten význam, jak jsme jej popsali. Například hlavní adresář / má jako nadřazený adresář sebe sama.
. -- tento adresář Je to adresář, ve kterém právě pracujeme. Soubory v něm stačí specifikovat pouze jménem. Pro odkaz na aktuální adresář se často používá ./. Zvláště v případech, že voláme program nebo skript v aktuálním adresáři a systém se tváří že ho nezná, ho lze spustit jako ./příkaz. Například skript skripticek v aktuálním adresáři zavoláme:
pepa@TuX:~
$ ./skripticek
.. -- nadřazený adresář Například ../doc znamená adresář doc o jednu úroveň výše. ../../doc znamená adresář doc o dvě úrovně výše v adresářové struktuře. Tento způsob zápisu se často využívá ve zdrojových kódech.
⚠️ Znaky ., .. a ~ se naprosto běžně využívají pro zápis cesty:
pepa@TuX:~$ cd ..
pepa@TuX:~$ cat ./skripty/skript.sh
pepa@TuX:/$ cat ~/skript.sh
cd Příkaz cd (change directory) změní pracovní adresář – fyzicky se do něj přesune. Tento příkaz je součástí jádra Linuxu (kernelu). Nemá manuálovou stránku. Má pouze tři způsoby použití a nemá přepínače:
$ cd adresar
$ cd ..
$ cd
..Zkuste ještě příkaz:
$ cd .
Nestane se nic. Jedna tečka totiž označuje "tento adresář".
💡 Všimněte si, že přesun mezi adresáři (cd) a výpis adresáře (ls) jsou dvě samostatné (na sobě nezávislé) operace. V okenních systémech se vykonávají vždy spolu (nelze po vstupu do adresáře nevypsat jeho obsah).
Pomocí šipek na klávesnici nahoru a dolů můžeme procházet všechny dříve zapsané příkazy. Nemá žádný limit počtu. Bash je totiž ukládá do skrytého souboru ~/.bash_history ve vašem profilu.
Seznam všech zapsaných příkazů v aktuální relaci se zapíše hromadně až při odhlášení (ukončení relace).
Přepínače jsou důležitou součástí příkazů – rozšiřují funkce příkazu. Bez nich by to zkrátka nešlo. Mohou mít tři tvary (záleží, jak je tvůrci naprogramovali):
-písmeno--slovo-písmeno hodnota nebo -písmeno=hodnotals -lF --color=noneVíce přepínačů můžeme sloučit za jednu pomlčku. Toto můžeme použít pouze u krátkého jedno-pomlčkového tvaru, které nemají parametr. Na jejich pořadí nezáleží:
ls -al
ls -la
ls -l -a
ls -a -l
Zkuste zjistit, co znamenají soubory initrd.img a vmlinuz, které jsou v kořenovém adresáři /.
V adresáři /dev jsou některá hardwarová zařízení zařazena mezi "bloková" a jiná mezi "znaková". Zjistěte, čím se liší a uveďte příklady každého typu.